/**
 * APP环境路由跳转插件
 * 确保在APP环境中除了返回操作外，所有跳转都在新webview中打开
 */
export default defineNuxtPlugin(() => {
  const router = useRouter();

  // 检测是否为APP环境
  const isAppEnvironment = () => {
    if (typeof window === 'undefined') return false;

    const userAgent = navigator.userAgent;
    return (
      /yixinli|zixun|qingsu|muse/i.test(userAgent) ||
      window.location.href.includes('app=true')
    );
  };

  // 拦截原生的router.push方法
  if (process.client && isAppEnvironment()) {
    const originalPush = router.push;
    const originalReplace = router.replace;

    // 重写router.push方法
    router.push = function (to: any, options?: any) {
      console.log('APP环境检测到路由跳转，将在新webview中打开:', to);

      // 如果有全局的bridge对象，使用bridge打开新webview
      if (window.bridge && typeof window.bridge.openWebView === 'function') {
        const url = typeof to === 'string' ? to : router.resolve(to).href;
        const fullUrl = url.startsWith('http')
          ? url
          : window.location.origin + url;

        window.bridge.openWebView({
          url: fullUrl,
          isCurrentPageOpen: 0, // 0表示在新webview中打开
          hideNavigationBar: 0,
        });

        return Promise.resolve();
      }

      // 如果没有bridge，回退到原始方法
      return originalPush.call(this, to);
    };

    // 重写router.replace方法（保持原有逻辑，因为replace通常用于返回或替换当前页面）
    router.replace = function (to: any, options?: any) {
      console.log('APP环境检测到路由替换:', to);
      return originalReplace.call(this, to);
    };
  }
});
